
package Esquemas;

import java.util.LinkedList;

/**
 * Clase que representa un esquema de la base de datos
 * @author Carmen M. Morillo Arias, Christian Neria Suárez, Diego Ojeda García
 */
public class Esquema {
    String nombre;
    private LinkedList<TipodeDato> tiposdedatos;

    /**
     * Constructor de la clase
     * @param nombre Nombre del esquema
     */
    public Esquema(String nombre) {
        this.nombre = nombre;
        
        tiposdedatos = new LinkedList<TipodeDato>();
    }

    /**
     * Método que obtiene el nombre de un esquema
     * @return Nombre del esquema
     */
    public String getNombre() {
        return nombre;
    }

    /**
     * Método que establece el nombre de un esquema
     * @param nombre Nombre del esquema
     */
    public void setNombre(String nombre) {
        this.nombre = nombre;
    }      
    
    /**
     * Método que añade un tipo de datos a un esquema
     * @param tipodedato El tipo de dato que vamos a añadir al esquema
     */
    public void anadirTipodeDato(TipodeDato tipodedato){
        getTiposdedatos().add(tipodedato);
    }

    /**
     * Método que obtiene los tipos de datos que tiene un esquema
     * @return Lista con los tipos de datos del esquema
     */
    public LinkedList<TipodeDato> getTiposdedatos() {
        return tiposdedatos;
    }

    /**
     * Método que establece los tipos de datos de un esquema
     * @param tiposdedatos Lista de los tipos de datos del esquema
     */
    public void setTiposdedatos(LinkedList<TipodeDato> tiposdedatos) {
        this.tiposdedatos = tiposdedatos;
    }
    
    public Entidad obtenerEntidadFuerte(String nombre){    
        Entidad e = null;
        
        for(int i=0;i<tiposdedatos.size();i++){
            if(tiposdedatos.get(i) instanceof Entidad){
                e = (Entidad) tiposdedatos.get(i);
                if(e.getNombre().equalsIgnoreCase(nombre)){
                    return e;
                }
            }
        }
        return e;
    }
}
